<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // 1 封装函数
        //    普通的实现代码
        //    考虑哪些作为参数
        //    考虑是否需要返回值  ---

        // 2 return 的用法
        //    函数的执行结果
        //    提前结束函数


        // 3 作用域
        //    全局变量
        //    局部变量
        //    没有var的变量  --- 全局变量
        //    作用域链  --- 一级一级的向上查找

        // 4 预编译

        // 5 函数的声明方式

        // 6 递归 ： 函数自己调用自己   --- 一定要有出口





        // var a = 1;

        // function f() {
        //     console.log(a);    // undefined
        //     var a = 2;
        //     console.log(a);    // 2
        // }

        // f();


        // 斐波拉切数列  0 1 1 2 3 5 8 13 21 34 ....
        //    第n个数是前两个数的和   f(n) = f(n - 1) + f(n - 2)
        //    第一个数是0
        //    第二个数是1


        function fb(n) {

            if (n === 1) {
                return 0
            }

            if (n === 2) {
                return 1
            }

            return fb(n - 1) + fb(n - 2);
        }


        document.write(fb(3));


    </script>

</body>

</html>